package com.lanou3g.com.model;






import com.lanou3g.com.pojo.User;
import com.lanou3g.com.util.JDBCUtil;
import com.lanou3g.com.util.MyResultSet;
import com.lanou3g.com.util.MyStatement;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


/**
 * If there are no bugs, it was created by Chen FengYao on 2018/4/27;
 * Otherwise, I don't know who created it either
 */

/*
专门与数据库进行连接
*/
public class Model {

    /**
     * 判断数据库中 是否有某一个用户名
     *
     * @param username 要判断的 用户名
     * @return true: 数据库中有该用户; false: 数据库中没有该用户
     */
    public boolean hasUsername(String username) {

        String sql = "SELECT COUNT(*) FROM users WHERE username = ?";
        MyStatement statement = JDBCUtil.getPreStatement(sql);
        statement.setString(1, username);
        // 这行语句执行完成后,不会自动关闭资源
        MyResultSet rs = statement.executeQuery();

        rs.next(); //索引移动到第一行
        int count = rs.getInt(1);
        rs.close();
        JDBCUtil.closeResource(statement);
        return count > 0;

    }


    /**
     * 注册
     *
     * @param username 用户名
     * @param psd      密码
     * @param word     喜欢的一句话
     * @return true: 注册成功; false 注册失败
     */
    public boolean register(String username,
                            String psd,
                            String word) {
        String sql = "INSERT INTO users (username , psd , word) " +
                "VALUES ( ? , ? , ? )";
        MyStatement statement = JDBCUtil.getPreStatement(sql);
        statement.setString(1, username);
        statement.setString(2, psd);
        statement.setString(3, word);
        // 不需要结果集的 执行,可以实现自动关闭资源
        int rows = statement.executeUpdate();
        return rows > 0;

    }


    /**
     * 登录
     *
     * @param username 用户名
     * @param psd      密码
     * @return 登录成功: 返回装着用户信息的User对象
     * 登录失败: return null
     */
    public User login(String username, String psd) {
        // 1. 查一下 是否有 这个用户
        // 条件是 用户名,和密码 都匹配上

        String checkLogin = "SELECT * FROM users WHERE " +
                "username = ? AND psd = ?";
        PreparedStatement statement =
                JDBCUtil.getPreStatement(checkLogin);
        try {
            // 设置值
            statement.setString(1, username);
            statement.setString(2, psd);

            ResultSet rs = statement.executeQuery();
            User user = null;
            if (rs.next()) {
                user = new User();
                String dbUsername = rs
                        .getString("username");
                String dbPsd = rs
                        .getString("psd");
                String dbWord = rs
                        .getString("word");
                user.setUsername(dbUsername);
                user.setPsd(dbPsd);
                user.setWord(dbWord);
            }
            rs.close();
            JDBCUtil.closeResource(statement);
            return user;
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return null;
    }



}
